По умолчанию мы не может отлавливать ошибку переполнения. Смотрим пример:
using System;
class MainClass
{
public static void Main(string[] args)
{
byte b1=250;
byte b2=250;
byte c;
c=(byte)(b1+b2);
Console.WriteLine(c);
}
}
Максимальный размер byte - 254. В результате сложение будет получено явно большее число. Но мы с Вами об этом не узнаем.

Для организации проверки подобных ситуаций есть ключевое слово checked. Давайте посмотрим пример.
using System;
class MainClass
{
public static void Main(string[] args)
{
byte b1=250;
byte b2=250;
byte c;
c=checked((byte)(b1+b2));
Console.WriteLine(c);
}
}
И теперь в результате выполнения операции будет сгенерировано исключение.

При необходимости его можно отловить в программе.
using System;
class MainClass
{
public static void Main(string[] args)
{
byte b1=250;
byte b2=250;
byte c;
try
{
c=checked((byte)(b1+b2));
}
catch(System.OverflowException e)
{
Console.WriteLine(e.ToString());
}
}
}